While software is being developed and after it is deployed, it is often important to have access to information related to the executable software that is not stored as part of the executable. This includes, but is not limited to, debug information produced by the development tools like compilers and linkers, the source code from which the executable is generated, instructions for tools that process the executable in some way, patches to transform an executable to another version, and the output of tools that get made available for use by other tools.
For groups developing or deploying software, getting access to this information can be difficult or time consuming. Every time the software is updated, the associated information is usually updated and the updates made available. In a development environment, this can be as often as several times a day. Some common mechanisms used to handle this today are to copy the information to the computer where the software is installed and rely on default search mechanisms for tools that need it to find this information, to set environment variables to point to a location on the local computer or a network server where the information resides and to update these environment variables whenever the software is updated, to patch the executable files that comprise the software to point to the location where the information resides, or for tools to assume that the information can be found locally and to prompt the user to enter the correct location when the information cannot be found. All of these require either extra steps to be taken whenever software is updated or for some individual to have knowledge where to find the information that is needed.
For software deployment scenarios in particular, though this can also apply to development and other uses, all the information is not needed all the time so requiring the information to be copied locally is unnecessary. It is also impractical in many cases. For example, for Windows 2000 the symbolic debug information for all the executables is in excess of three gigabytes. It is not necessary to have all this information available all the time just so the fraction that is needed can be available when it is needed.
Updating environment variables every time the software is updated is time consuming and error prone. The more distinct software packages installed, the more effort involved and the greater the likelihood of error.
As new types of information are introduced, any scripts and/or processes to update the client systems to locate information need to be updated to include the new types further increasing the cost of keeping the client system updated.
For the reasons stated above and for other reasons which will become apparent from reading and studying the present disclosure, systems and methods are needed which extend the mechanism for locating solution access information, e.g. information related to an executable, including more accurately pinpointing the solution access information, and then obtaining and implementing the correct solution for updating software programs.